b737a232d34b1ccdb399fdc2147106f7eeff6615,src/main/java/com/steelbridgelabs/oss/neo4j/structure/Neo4JVertex.java,Neo4JVertex,edges,#Direction#String#,370
Before Change
// create string builder
StringBuilder builder = new StringBuilder();
// match clause
builder.append("MATCH ").append(matchPattern("n", "id")).append("-[r").append(labels.length == 1 ? ":`" + labels[0] + "`" : "").append(!partition.isEmpty() ? "]->(m:" + processLabels(partition, false) + ")" : "]->(m)");
// edge ids already in memory
List<Object> identifiers = outEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
// process where clause
processEdgesWhereClause(labels, identifiers, "r", builder, parameters);
// return
builder.append(" return n, r, m");
// create statement
Statement statement = new Statement(builder.toString(), parameters);
// execute command
Stream<Edge> query = session.edges(statement);
// edges in memory plus the ones in database (return copy since edges can be deleted in the middle of the loop)
Iterator<Edge> result = Stream.concat((labels.length != 0 ? outEdges.stream().filter(edge -> set.contains(edge.label())) : outEdges.stream()).map(edge -> (Edge)edge), query)
.collect(Collectors.toList())
.iterator();
// after this line it is safe to update loaded flag
outEdgesLoaded = labels.length == 0;
// return iterator
return result;
}
// edges in memory (return copy since edges can be deleted in the middle of the loop)
return outEdges.stream().filter(edge -> labels.length == 0 || set.contains(edge.label()))
.map(edge -> (Edge)edge)
.collect(Collectors.toList())
.iterator();
}
// in edges
if (direction == Direction.IN) {
// check we have all edges in memory
if (!inEdgesLoaded) {
// create string builder
StringBuilder builder = new StringBuilder();
// match clause
builder.append("MATCH ").append(matchPattern("n", "id")).append("<-[r").append(labels.length == 1 ? ":`" + labels[0] + "`" : "").append(!partition.isEmpty() ? "]-(m:" + processLabels(partition, false) + ")" : "]-(m)");
// edge ids already in memory
List<Object> identifiers = inEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
// process where clause
processEdgesWhereClause(labels, identifiers, "r", builder, parameters);
// return
builder.append(" RETURN n, r, m");
// create statement
Statement statement = new Statement(builder.toString(), parameters);
// execute command
Stream<Edge> query = session.edges(statement);
// edges in memory plus the ones in database (return copy since edges can be deleted in the middle of the loop)
Iterator<Edge> result = Stream.concat((labels.length != 0 ? inEdges.stream().filter(edge -> set.contains(edge.label())) : inEdges.stream()).map(edge -> (Edge)edge), query)
.collect(Collectors.toList())
.iterator();
// after this line it is safe to update loaded flag
inEdgesLoaded = labels.length == 0;
// return iterator
return result;
}
// edges in memory (return copy since edges can be deleted in the middle of the loop)
return inEdges.stream().filter(edge -> labels.length == 0 || set.contains(edge.label()))
.map(edge -> (Edge)edge)
.collect(Collectors.toList())
.iterator();
}
// check we have all edges in memory
if (!outEdgesLoaded || !inEdgesLoaded) {
// create string builder
StringBuilder builder = new StringBuilder();
// match clause
builder.append("MATCH ").append(matchPattern("n", "id")).append("-[r").append(labels.length == 1 ? ":`" + labels[0] + "`" : "").append(!partition.isEmpty() ? "]-(m:" + processLabels(partition, false) + ")" : "]-(m)");
// edge ids already in memory
List<Object> identifiers = Stream.concat(outEdges.stream(), inEdges.stream()).map(Neo4JEdge::id).collect(Collectors.toList());
// process where clause
After Change
// create string builder
StringBuilder builder = new StringBuilder();
// match clause
builder.append("MATCH ").append(matchPattern("n", "id")).append("<-[r").append(set.stream().map(label -> ":`" + label + "`").collect(Collectors.joining("|"))).append("]-(m").append(processLabels(Collections.emptySet(), true, false)).append(")");
// edge ids already in memory
List<Object> identifiers = inEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
// process where clause
processEdgesWhereClause("m", identifiers, "r", builder, parameters);
// return
builder.append(" RETURN n, r, m");
// create statement
Statement statement = new Statement(builder.toString(), parameters);
// execute command
Stream<Edge> query = session.edges(statement);
// edges in memory plus the ones in database (return copy since edges can be deleted in the middle of the loop)
Iterator<Edge> result = Stream.concat((labels.length != 0 ? inEdges.stream().filter(edge -> set.contains(edge.label())) : inEdges.stream()).map(edge -> (Edge)edge), query)
.collect(Collectors.toList())
.iterator();
// after this line it is safe to update loaded flag
inEdgesLoaded = labels.length == 0;
// return iterator
return result;
}
// edges in memory (return copy since edges can be deleted in the middle of the loop)
return inEdges.stream().filter(edge -> labels.length == 0 || set.contains(edge.label()))
.map(edge -> (Edge)edge)
.collect(Collectors.toList())
.iterator();
}
// check we have all edges in memory
if (!outEdgesLoaded || !inEdgesLoaded) {
// create string builder
StringBuilder builder = new StringBuilder();
// match clause
builder.append("MATCH ").append(matchPattern("n", "id")).append("-[r").append(set.stream().map(label -> ":`" + label + "`").collect(Collectors.joining("|"))).append("]-(m").append(processLabels(Collections.emptySet(), true, false)).append(")");
// edge ids already in memory
List<Object> identifiers = Stream.concat(outEdges.stream(), inEdges.stream()).map(Neo4JEdge::id).collect(Collectors.toList());
// process where clause
processEdgesWhereClause("m", identifiers, "r", builder, parameters);
// return
builder.append(" RETURN n, r, m");
// create statement